package admin

import (
	"gitee.com/gopher2011/gin"
	"gitee.com/gopher2011/mall/app/dao"
	"gitee.com/gopher2011/mall/app/service"
	"net/http"
	"strconv"
)

// 商品属性管理 /product_attribute
var PmsProductAttribute = &pmsProductAttributeApi{}

type pmsProductAttributeApi struct{}

// 添加商品属性信息 /create Post 参数:dao.PmsProductAttribute
func (it *pmsProductAttributeApi) Create(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.PmsProductAttribute
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.PmsProductAttribute.Create(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!", "err": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 修改商品属性信息 /update/:id Post 参数:id,dao.PmsProductAttribute
func (it *pmsProductAttributeApi) Update(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("id"))
	// 将请求参数解析到 ptr上
	var ptr dao.PmsProductAttribute
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.PmsProductAttribute.Update(int64(id), ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!", "err": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 批量删除商品属性 /delete Post 参数:ids
func (it *pmsProductAttributeApi) Delete(r *gin.Context) {
	ids := make([]int64, 0)
	for _, v := range r.PostFormArray("ids") {
		id, _ := strconv.Atoi(v)
		ids = append(ids, int64(id))
	}
	res, err := service.PmsProductAttribute.Delete(ids)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!", "err": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

//查询单个商品属性 /:id Get 参数:id
func (it *pmsProductAttributeApi) GetItem(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("id"))
	res, err := service.PmsProductAttribute.GetItem(id)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!", "err": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 根据分类查询属性列表或参数列表 /list/:cid Get 参数:dao.PmsProductAttributeList
func (it *pmsProductAttributeApi) List(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.PmsProductAttributeList
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.PmsProductAttribute.List(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!", "err": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 根据商品分类的id获取商品属性及属性分类 /attrInfo/:product_category_id Get 参数:product_category_id
func (it *pmsProductAttributeApi) GetAttrInfo(r *gin.Context) {
	id, _ := strconv.Atoi(r.Param("product_category_id"))
	res, err := service.PmsProductAttribute.GetProductAttrInfo(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!", "err": err.Error()})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}
